// Package shunfeng 结构体 顺丰快递 用于数据对接时的数据存储
package shunfeng

// SfRoutingRequest 顺丰路由查询请求参数<msgData>
type SfRoutingRequest struct {
	Language        int      `json:"language"`        // 否 返回描述语语言	0：中文 1：英文 2：繁体
	TrackingType    int      `json:"trackingType"`    // 是 查询号类别:	1:根据顺丰运单号查询,trackingNumber将被当作顺丰运单号处理 	2:根据客户订单号查询,trackingNumber将被当作客户订单号处理
	TrackingNumber  []string `json:"trackingNumber"`  // 是 查询号:	trackingType=1,则此值为顺丰运单号	如果trackingType=2,则此值为客户订单号
	MethodType      string   `json:"methodType"`      // 否 路由查询类别:	1:标准路由查询	2:定制路由查询
	ReferenceNumber string   `json:"referenceNumber"` // 否 参考编码(目前针对亚马逊客户,由客户传)
	CheckPhoneNo    string   `json:"checkPhoneNo"`    // 否		电话号码验证
}

// SfRoutingReceive 顺丰路由查询响应参数<msgData>
type SfRoutingReceive struct {
	AccessToken   string `json:"accessToken"`   // 访问令牌
	ApiErrorMsg   string `json:"apiErrorMsg"`   // 错误描述
	ApiResponseID string `json:"apiResponseID"` // 响应ID
	ApiResultCode string `json:"apiResultCode"` // 响应码
	ApiResultData string `json:"apiResultData"` // 顺丰路由查询公共响应参数
	ExpiresIn     string `json:"expiresIn"`     //  accessToken访问令牌过期时间，单位（秒）,默认7200秒。从申请成功后，开始倒计时7200s,令牌过期后（即expiresIn=0）需要重新获取
}

// SfRoutingReceiveData 顺丰路由查询公共响应参数
type SfRoutingReceiveData struct {
	Success   bool        `json:"success"`   // 是		true 请求成功，false 请求失败
	ErrorCode string      `json:"errorCode"` // 是		错误编码，S0000成功
	ErrorMsg  interface{} `json:"errorMsg"`  // 是		错误描述
	MsgData   SfMsgData   `json:"msgData"`   // 是		返回的详细数据
}

// SfMsgData 顺丰路由查询 响应参数<msgData>
type SfMsgData struct {
	RouteResps []RouteResps `json:"routeResps"` // 是	顺丰运单号对应的路由详情（列表）
}

type RouteResps struct {
	MailNo string   `json:"mailNo"  xml:"nu"`    // 是	顺丰运单号
	Routes SfRoutes `json:"routes" xml:"routes"` // 是	路由信息（列表）
}

// SfRoutes 顺丰快递路由响应详情
type SfRoutes []struct {
	AcceptAddress string `json:"acceptAddress" xml:"address"` // 是	路由节点发生的时间，格式：YYYY-MM-DD HH24:MM:SS，示例：2012-7-30	09:30:00
	AcceptTime    string `json:"acceptTime" xml:"time"`       // 否	路由节点发生的地点
	Remark        string `json:"remark" xml:"content"`        // 是	路由节点具体描述
	OpCode        string `json:"opCode" xml:"opCode"`         // 是	路由节点操作码
}
